package ansi.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import ansi.exception.DAOExcepcion;
import ansi.modelo.Modulo;
import ansi.util.ConexionBD;

public class ModuloDAO  extends BaseDAO {
	
	public Collection<Modulo> listar(Integer idRol) throws DAOExcepcion {
		Collection<Modulo> c	= new ArrayList<Modulo>();
		Connection con			= null;
		PreparedStatement stmt	= null;
		ResultSet rs			= null;
		StringBuffer sql		= new StringBuffer();
		try {
			con				= ConexionBD.obtenerConexion();
			sql.append("SELECT m.idModulo, m.Nombre_Modulo, m.URL_Modulo, m.idModuloPadre ");
			sql.append("FROM modulo m ");
			sql.append("INNER JOIN Rol_Modulo rm ON rm.Modulo_idModulo = m.idModulo ");
			sql.append("WHERE rm.Rol_idRol = " + idRol + " ");
			sql.append("ORDER BY m.Nombre_Modulo ");
			stmt			= con.prepareStatement(sql.toString());
			rs				= stmt.executeQuery();
			while (rs.next()) {
				Modulo vo	= new Modulo();
				vo.setIdModulo(rs.getInt("idModulo"));
				vo.setNombre_Modulo(rs.getString("Nombre_Modulo"));
				vo.setURL_Modulo(rs.getString("URL_Modulo"));
				c.add(vo);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return c;
	}
	
}
